package com.hmall.api.fallback;

import com.hmall.api.client.UserClient;
import com.hmall.common.exception.BizIllegalException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;

@Slf4j
public class UserClientFallback implements FallbackFactory<UserClient> {
    @Override
    public UserClient create(Throwable cause) {
        //创建UserClient接口实现类, 其中的方法, 编写失败降级的处理逻辑
        return new UserClient() {
            @Override
            public void deductMoney(String pw, Integer amount) {
                //调用的方法存在,分布式事务, 得抛出异常, 否则, 不会回滚
                log.error("调用扣减用户余额失败, 具体参数为: {}, {}", pw, amount, cause);
                throw new BizIllegalException("调用扣减用户余额失败!");
            }
        };
    }
}
